<?php
require_once("../Datos/Selector.php");
require_once("../Datos/SubConsulta.php");
require_once("../Datos/Tablas/Tbl_ec_pedidos.php");
require_once("../Datos/Selectores/Sel_Clientes.php");
require_once("../Datos/Selectores/Sel_Efec_Cobrador.php");
require_once("../Datos/Selectores/Sel_Articulos_Pedidos.php");
require_once("../Datos/Tablas/Tbl_ec_formas_pago.php");
require_once("../Datos/Tablas/Tbl_ec_usuarios.php");

class Sel_Pedidos extends Selector{

	function Sel_Pedidos(&$conexion){
		$this->Selector($conexion);

		$this->Nombre = "Pedidos";
		$this->estTablaBase(new Tbl_ec_pedidos($conexion, ''));

        $relacionada = new SubConsulta(new Sel_Clientes($conexion), 'Clientes');
		$this->agregarTablaRelacionada($relacionada, 'INNER JOIN');
		$this->agregarCampoJunta($this->tablaBase->obtCampo('ped_cliente'), $this->obtCampoRelacionado('Clientes', 'Codigo'), '=');
		
		$relacionada = new SubConsulta(new Sel_Efec_Cobrador($conexion), '');
		$this->agregarTablaRelacionada($relacionada, 'LEFT JOIN');
		$this->agregarCampoJunta($this->tablaBase->obtCampo('ped_cobrador'), $this->obtCampoRelacionado('Efec_Cobrador', 'Cobrador'), '=');
        
		$relacionada = new SubConsulta(new Sel_Articulos_Pedidos($conexion), '');
		$this->agregarTablaRelacionada($relacionada, 'INNER JOIN');
		$this->agregarCampoJunta($this->tablaBase->obtCampo('ped_id'), $this->obtCampoRelacionado('Articulos_Pedidos', 'ap_pedido'), '=');
        
		$relacionada = new Tbl_ec_formas_pago($conexion, '');
		$this->agregarTablaRelacionada($relacionada, 'INNER JOIN');

		$this->agregarCampoJunta($this->tablaBase->obtCampo('ped_forma_pago'), $this->obtCampoRelacionado('ec_formas_pago', 'fp_id'), '=');
        
		$relacionada = new Tbl_ec_usuarios($conexion, 'Cobradores');
		$this->agregarTablaRelacionada($relacionada, 'INNER JOIN');

		$this->agregarCampoJunta($this->tablaBase->obtCampo('ped_cobrador'), $this->obtCampoRelacionado('Cobradores', 'u_id'), '=');
		
		$relacionada = new Tbl_ec_usuarios($conexion, 'Vendedores');
		$this->agregarTablaRelacionada($relacionada, 'INNER JOIN');

		$this->agregarCampoJunta($this->tablaBase->obtCampo('ped_vendedor'), $this->obtCampoRelacionado('Vendedores', 'u_id'), '=');

		$campo = $this->tablaBase->obtCampo('ped_id');
		$campo->estAlias('Pedido');
		$campo->estEsGrupo(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->tablaBase->obtCampo('ped_fecha');
		$campo->estAlias('Fecha');
		$this->agregarCampoVisible($campo);
		
		$campo = $this->obtCampoRelacionado('Clientes', 'Localidad');
		$this->agregarCampoVisible($campo);
		
		$campo = $this->obtCampoRelacionado('Clientes', 'cli_localidad');
		$this->agregarCampoVisible($campo);

		$tabla = $this->obtTabla('Clientes');
		$funcion = new Funcion('Cliente', 'Concat', $tabla);
		$campo = $this->obtCampoRelacionado('Clientes', 'Apellido');
		$funcion->agregarCampo($campo);

		$funcion->agregarTexto(', ');

		$campo = $this->obtCampoRelacionado('Clientes', 'Nombre');
		$funcion->agregarCampo($campo);

		$this->agregarCampoVisible($funcion);


		$tabla = $this->obtTabla('Articulos_Pedidos');
		$funcion = new Funcion('Articulo', '', $tabla);
		$funcion->agregarExpresion("GROUP_CONCAT(Concat(Articulos_Pedidos.Articulo, ', ', Articulos_Pedidos.Marca) SEPARATOR ' - ')");

		$this->agregarCampoVisible($funcion);

		$campo = $this->obtCampoRelacionado('ec_formas_pago', 'fp_descripcion');
		$campo->estAlias('Forma_Pago');
		$this->agregarCampoVisible($campo);

		$campo = $this->tablaBase->obtCampo('ped_cant_pagos');
		$campo->estAlias('Cantidad_Pagos');
		$this->agregarCampoVisible($campo);
		
		$campo = $this->tablaBase->obtCampo('ped_vendedor');
		$campo->estAlias('id_Vendedor');
		$this->agregarCampoVisible($campo);
		
		$campo = $this->tablaBase->obtCampo('ped_cobrador');
		$campo->estAlias('id_Cobrador');
		$this->agregarCampoVisible($campo);
		
		$campo = $this->tablaBase->obtCampo('ped_cliente');
		$campo->estAlias('ped_cliente');
		$this->agregarCampoVisible($campo);
		
		$tabla = $this->obtTabla('Vendedores');
		$funcion = new Funcion('Vendedor', 'Concat', $tabla);
		$campo = $this->obtCampoRelacionado('Vendedores', 'u_apellido');
		$funcion->agregarCampo($campo);

		$funcion->agregarTexto(', ');

		$campo = $this->obtCampoRelacionado('Vendedores', 'u_nombre');
		$funcion->agregarCampo($campo);
		
		$funcion->estOcultoListado(1);
		$funcion->estOcultoDetalle(1);
		
		$this->agregarCampoVisible($funcion);

		$tabla = $this->obtTabla('Cobradores');
		$funcion = new Funcion('Cobrador', 'Concat', $tabla);
		$campo = $this->obtCampoRelacionado('Cobradores', 'u_apellido');
		$funcion->agregarCampo($campo);

		$funcion->agregarTexto(', ');

		$campo = $this->obtCampoRelacionado('Cobradores', 'u_nombre');
		$funcion->agregarCampo($campo);

		$this->agregarCampoVisible($funcion);
		
		$campo = $this->tablaBase->obtCampo('ped_monto');
		$campo->estAlias('Monto');
		$this->agregarCampoVisible($campo);

		$campo = $this->tablaBase->obtCampo('ped_comentario');
		$campo->estAlias('Comentario');
		$this->agregarCampoVisible($campo);
		
		$campo = $this->obtCampoRelacionado('Efec_Cobrador', 'Efectividad');
		$this->agregarCampoVisible($campo);
		
		$this->txtConsulta = $this->GenerarConsulta();
 }
}
?>
